# -*- coding: utf-8 -*-
"""
@Time    : 2024/6/27 15:20 
@Author  : ZhangShenao 
@File    : iterable_obj.py 
@Desc    : Iterable可迭代对象
如果一个对象所属的类,定义了__iter__()方法,那么这个对象就是可迭代的
当这个对象被iter()函数使用时,就会返回一个迭代器对象
如果对象具有__iter__() 方法,则可以说它支持迭代协议
"""
from typing import Iterable

# 并不是所有对象都是Iterable可迭代的
# 如果对于不可迭代的对象,调用iter()函数,会抛出TypeError异常
# int_iterator = iter(123)  # TypeError: 'int' object is not iterable

# 可以通过判断一个对象是否instance of Iterable,来判断对象是否可迭代
print(f'int is iterable? {isinstance(1, Iterable)}')  # False
print(f'str is iterable? {isinstance('abc', Iterable)}')  # True
print(f'list is iterable? {isinstance([1, 2, 3], Iterable)}')  # True
print(f'dict is iterable? {isinstance({'k1': 'v1'}, Iterable)}')  # True
